{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "# 最简单的模型，只用一个节点\n",
    "\n",
    "import os\n",
    "# os.environ['CUDA_VISIBLE_DEVICES'] = '-1'  # 不使用GPU\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.models import load_model\n",
    "from keras.utils import to_categorical\n",
    "from keras.layers.core import Dropout\n",
    "\n",
    "import time\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "from keras import backend as K\n",
    "# import icecream.ic as ic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "读入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "start = time.time()\n",
    "\n",
    "\n",
    "train = pd.read_csv('train.csv')\n",
    "X_train = train.iloc[:, 0:2].values\n",
    "Y_train = train.iloc[:, 2].values\n",
    "\n",
    "test = pd.read_csv('test.csv')\n",
    "X_test = test.iloc[:, 0:2].values\n",
    "Y_test = test.iloc[:, 2].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x16b55f7dc48>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(1)\n",
    "plt.plot(X_train[:, 0], X_train[:, 1], '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "config = tf.compat.v1.ConfigProto()\n",
    "config.gpu_options.allow_growth = True\n",
    "sess = tf.compat.v1.Session(config=config)\n",
    "# K.set_session(sess)\n",
    "tf.compat.v1.keras.backend.set_session(sess)\n",
    "\n",
    "file = 'playground1'\n",
    "if os.path.exists(file+'.h5'):\n",
    "    model = load_model(file+'.h5')\n",
    "    # os.rename(file+)\n",
    "else:\n",
    "    model = Sequential()\n",
    "    model.add(Dense(input_dim=2, units=1, activation='sigmoid'))\n",
    "    # model.add(Dense(1, activation='relu'))\n",
    "    # model.add(Dense(2, activation='softmax'))\n",
    "    # model.add(Dropout(0.2))\n",
    "\n",
    "    model.compile(loss='binary_crossentropy',\n",
    "                  optimizer='rmsprop',\n",
    "                  metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Weights= [[0.84592456]\n",
      " [0.1009808 ]] \n",
      "biases= [-2.7903497]\n",
      "100/100 [==============================] - 0s 50us/step\n",
      "loss:0.0468 accuracy:0.9900\n"
     ]
    }
   ],
   "source": [
    "# model.fit(X_train, Y_train, batch_size=n, epochs=1000, verbose=1, validation_data=(X_test, Y_test))\n",
    "model.fit(X_train, Y_train, batch_size=len(Y_train), epochs=300, verbose=0)\n",
    "W, b = model.layers[0].get_weights()\n",
    "print('Weights=', W, '\\nbiases=', b)\n",
    "\n",
    "loss, accuracy = model.evaluate(X_test, Y_test, verbose=1)\n",
    "print('loss:%.4f accuracy:%.4f' % (loss, accuracy))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "w1 = W[0][0]\n",
    "w2 = W[1][0]\n",
    "x = np.linspace(0, 5, 101)\n",
    "y = (-b - w1*x) / w2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAADxCAYAAADLJcAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxTdbr48c+TdAfKDiK7yCIubAUZN8CFQRwEFYfFBRBFFBWlOKNzvePcO9f5uSBeUVAR2RyRQdwQGQEVVCxeKCAIsoNA2cpOoUua5vv746Ql3VNIepL0eb9e51WSnJw8p87k6Xd9xBiDUkop5bA7AKWUUqFBE4JSSilAE4JSSikvTQhKKaUATQhKKaW8NCEopZQCNCEopZStRGS6iKSLyMZSXhcRmSQiO0Rkg4h0DlYsmhCUUspeM4E+Zbx+K9Dae4wC3gpWIJoQlFLKRsaY74HjZZzSH5htLD8BtUSkUTBiiQrGRStbvXr1TIsWLewOQykVBtasWXPUGFP/Qq5xqYjJ9PPcg7AJyPZ5aqoxZmoFPq4xsM/ncZr3uYMVuIZfIiIhtGjRgtTUVLvDUEqFARHZc6HXyAQe9vPcv0G2MSbpAj5OSnguKHsORURCUEqpyiRU6pdnGtDU53ET4EAwPkjHEJRSqoIcQLyfRwAsAO73zjbqDpwyxgS8uwi0haCUUhUmQHSgriXyIdATqCciacDz+Zc3xrwNLAL6AjuweqtGBOiji9GEoJRSFRTILiNjzJByXjfAmAB9XJk0ISilVAUFsoUQSjQhKKVUBVXyoHKlicR7UkqpoNIWggoOjwemT4datWDgQLujUUr5IX+WUaTRhGA3EZg6FU6dgjvvBIfOBFYq1EVqC0G/fewmAsnJsG0bLFxodzRKKT9F+XmEE00IoeCuu6B5c3j1VbsjUUr5Ib+F4M8RTjQhhIKoKBg7Fr7/HlavtjsapVQ58mcZaQtBBcfIkZCYqK0EpcJAJW9dUWk0IYSKxEQYNQrmz4fffrM7GqVUGbTLSAXfE09Yg8yTJtkdiVKqDNplpIKvaVP44x/h3XetaahKqZCkLQRVOZKT4cwZKykopUKSthBU5ejcGXr1gtdfh9xcu6NRSpVAWwiq8iQnQ1oafPSR3ZEopUog6CwjVVluvRXatYMJE8AEpXSqUuoCCBAd5d8RTjQhhCKHA8aNg3XrYPlyu6NRShUhYq0n9ecIJ5oQQtV990H9+rpQTakQJALRTv+OcKIJIVTFxcGYMfDll7B5s93RKKV8aAtBVb5HH7USw2uv2R2JUsqHCETH+neEE00Ioax+fRg2DGbPhvR0u6NRSuWL0IUImhBC3VNPQU4OTJ5sdyRKqXyaEJQt2raFfv1gyhTIyrI7GqVUPk0IyhbJyXD0qNV1pJSynwBOP48wogkhHNxwAyQlwcSJ4PHYHY1SSruMlG1ErIVq27ZZ01CVUvYSINbPI4xoQggXAwdCs2a6UE2pUKAtBGWr6Gir7vJ330Fqqt3RKFW1aUJQtnvwQa27rFSo0EFlZavERHjoIWtb7D177I5GqapLWwgqJIwda/3UustK2UcTggoJWndZKfvpLCMVMpKTISMDpk2zOxKlqiZtIaiQ0aUL9OihdZeVsosmBBVSxo+Hfftg/ny7I1Gq6tGtK1RI6dvX2vhO6y4rVfkC2EIQkT4islVEdojIMyW8XlNEvhCR9SKySURGBO5GCtOEEK4cDmtr7LVr4fvv7Y5GqaolQIPKIuIEJgO3Au2BISLSvshpY4BfjTEdgJ7AqyISE6A7KcS2hCAiTUVkmYhs9ma9sd7n64jIUhHZ7v1Z264YQ97990O9erpQTanKFrgWQjdghzFmlzHGBcwF+hc5xwA1RESA6sBxwB2Q+yjCzhaCG0g2xlwGdAfGeDPjM8A3xpjWwDfex6ok8fFW3eUvvoAtW+yORqmqo2IJoZ6IpPoco3yu1BjY5/M4zfucrzeBy4ADwC/AWGNMULY9ti0hGGMOGmPWev+dAWzG+kX0B2Z5T5sFDLAnwjDx6KMQG6t1l5WqbP4nhKPGmCSfY6rPVaSEKxcdFPw98DNwMdAReFNEEgN4JwVCYgxBRFoAnYD/AxoaYw6ClTSABqW8Z1R+xj1y5EhlhRp6GjSwuo5mz4aq/HtQqjIFbpZRGtDU53ETrJaArxHAJ8ayA9gNtLuwGyiZ7QlBRKoDHwNPGmNO+/s+Y8zU/Ixbv3794AUYDsaNg+xsq8ymUir4AjeGsBpoLSItvQPFg4EFRc7ZC9wEICINgbbArkDcRlG2JgQRicZKBh8YYz7xPn1YRBp5X28EpNsVX9ho1w5uuw0mT9a6y0pVhgDNMjLGuIHHgMVY3ebzjDGbRGS0iIz2nvZ34BoR+QVrXPXPxpijgb4lsHEdnXfE/D1gszFmos9LC4BhwIven5/bEF74GT8eevWC99+HUaPKP18pdf7yWwgBYIxZBCwq8tzbPv8+APQOzKeVzc4WwrXAfcCNIvKz9+iLlQhuEZHtwC3ex6o8PXpA587W4LLWXVYquCJ06wrbwjXGrKDkEXbw9pepCsivu3zvvfDvf1tdSEqp4AhgCyGU2D6orALoj3+EJk10oZpSlUH3MlIhLb/u8rJl1pYWSqngiNAuI00Ikeahh6BGDZg4sfxzlVLnRwvkqLBQsyY8+CD861/W9thKqcDTFoIKG2PHWltiv/GG3ZEoFZk0Iaiw0bw5DBwI77wDp/1e/K2U8pcWyFFhJTnZSgbvvWd3JEpFHm0hqLDStStcfz387/+COyhbpytVdQkQ5+cRRjQhRLLkZNi7Fz7+2O5IlIos2mWkwk6/ftCmjdZdVirQtMtIhZ38usupqfDDD3ZHo1Rk0YSgws7990PdurqdhVKBpF1GKiwlJFhlNr/4ArZutTsapSKDdhmpsDVmDMTEWDOOlFIXTreuUGGrYUNrW+yZM7XuslKBoC0EFdby6y6/9ZbdkSgV/jQhqLDWvj307WvVXc7OtjsapcKbJgQV9saNg/R0+OADuyNRKvzpLCMV1m68ETp2tKagat1lpc6fthBU2BOxtrPYvBm++sruaJQKXzrLSEWEQYOgcWNdqKbUhdAWgooI0dHwxBPw7bewbp3d0SgVnjQhqIgxahRUr651l5U6X5oQVMSoVQtGjoS5cyEtze5olApLxunfEU40IVRVY8daM4207rJSFWYc4Irz7wgnmhCqqpYtz9VdzsiwOxqlwooRcDsdfh3hJLyiVYGVnAynTsH06XZHolRYMSLkRUX5dYQTTQhVWbducN118NprWndZqQrKczr9OsKJJoSqLjkZ9uyBTz6xOxKlwoZByMPp1xFONCFUdf36waWXWgvVtO6yUn4xCG6cfh3hRBNCVed0WnWXV62CH3+0OxqlwoJBcBHr1xFONCEoGD4c6tSBCRPsjkSpsKBdRipyJSTAI4/AggWwbZvd0SgVFgKVEESkj4hsFZEdIvJMKef0FJGfRWSTiHwX8Jvx0oSgLI89Zu1zpHWXlSpXoMYQRMQJTAZuBdoDQ0SkfZFzagFTgNuNMZcDdwfnrjQhqHwXXQT33GPVXT52zO5olAppVpdRlF9HOboBO4wxu4wxLmAu0L/IOUOBT4wxewGMMekBvyEvTQjqnHHjICtL6y4rVQ5rUDnGrwOoJyKpPscon0s1Bvb5PE7zPuerDVBbRJaLyBoRuT9Y9xVey+hUcF1xBfTpA2++CePHQ1yYbcSiVCUxUJEppUeNMUmlvCalXN5XFNAFuAmIB1aKyE/GmIAP+GkLQRWWnAyHD8OcOXZHolQIC1iXURrQ1OdxE+BACed8ZYw5a4w5CnwPdAjYrfiwNSGIyHQRSReRjT7P1RGRpSKy3fuztp0xVjk33QQdOmjdZaXKEMBpp6uB1iLSUkRigMHAgiLnfA5cLyJRIpIAXA1sDvhNYX8LYSbQp8hzzwDfGGNaA994H6vKImKNJfz6KyxebHc0SoWsQCQEY4wbeAxYjPUlP88Ys0lERovIaO85m4GvgA3AKmCaMWZjade8EGJs3q5ARFoAC40xV3gfbwV6GmMOikgjYLkxpm1Z10hKSjKpqalBj7XKcLms7bEvuwy+/truaJQKKBFZU0afvl/aJlU3b6de5de5N8rKC/68ymJ3C6EkDY0xBwG8PxuUdJKIjMoftT9y5EilBhjxYmLg8cfhm29g/Xq7o1Eq5BiEHGL9OsJJKCYEvxhjphpjkowxSfXr17c7nMjz8MNQrZo1lqCUKkS3rqg8h71dRXh/Bm0RhipD7drwwAPw4Yewf7/d0SgVUjQhVJ4FwDDvv4dhjbArOzz5pNZdVqoUuv11gInIh8BKoK2IpInISOBF4BYR2Q7c4n2s7HDJJXDnnVbd5TNn7I5GqZARwK0rQoqt0RpjhpTy0k2VGogqXXIyzJ9v1V1+4gm7o1EqJOR3GUWaUOwyUqGke3e45hprF9S8PLujUSokWLOMYvw6wokmBFW+8eNh92749FO7I1EqJERql5EmBFW+22+HVq10CqpSPnSWkaqa8usu//QTpKTYHY1SttNpp6pqy6+7rK0EpTQhqCquWjUYPdoaR9ixw+5olLKVbl2hlNZdVkF05vBhPrjtNl69+GJm9OjBiV277A6pVFWyhSAiiSLSqoTn/dvmT0WWRo1g6FCYMQOOH7c7GhVA6Rs3kvr222z+5BM8bnelf74nL4+ZPXqwa8kSzhw8yL4VK3jvmmtwhfCCyCqVEETkj8AW4GMR2SQiXX1enhnswFSIGjcOMjPh7bftjkQFyK8ff8y73brx1dixfHLPPczs1euCkoLxeMg5fZryttZ3nT3LvLvv5h/VqvFK/fqc2LWr4HONx4M7K4uDa9eedxzBZJAqt3XFX4AuxpiOwAjgfRG50/taSXVAVVVw5ZXQu7e1v1FOjt3RqAvkzs7m8xEjcGdlkedy4c7OZt+PP7Lhgw8A2L1sGUuffpoVL71E9smT5V5v+6JFvFizJi/XrctrTZpweMOGUs9d8OCDbF+4kNzMTLJPnMCTm1vodU9eHtEJCRd2g0ESyusQROSx8600WVa0Tp+6BKtEpBewUESaULwItKpKxo+3ksKHH1qzj1TYyTx2jA9vv520lSuh6F/yxrB+1iwwhkVjxpCbmYkzJobUKVMYvWEDcTVrlnjN02lpfHT33eRmZgKQceAAs2+5heT9+3FEFf+q2fnVV7izsws9J1FRGLebqLg4Gl51FRd17BiYGw6CEO4OughYLSJrgenAYuNnJbSyWggZvuMH3uTQE+gPXH7+saqwd/PNcNVV1hRUmyvuKat7ZV9KCju++oosP8d2Prn3Xg6sXl3qfz+Px8OS8eMLvtzzXC7OHjnCL96WQ0kOrV+PIzq60HOuM2fIOHCuZvzub7/l+xdeYN2MGcQmJhY6NyoujvZ33UWd1q3Jc7k4uG4dU7t04efZs5lyxRW80aYNK199tdyuqMpgEFzE+HVUemzGPAe0Bt4DhgPbReQfJY0HF1VWC+ERwCEi7Y0xv3o/KENE+mAVglZVVX7d5eHDYckS+P3v7Y6oyvK43fzz1ltJW7kSh9OJOBwM/+47Gl5V9ryPtJSUYl00+RzR0bS7/XYOrl5d+LNyc8sc5K1x8cXFu31cLubcdhtn0tOp1qABJ3buJC8nh6i4OGo2b05UfDx5LhficBBfty5Nr7mGbV98gfF4yMvOJn3TJhY88ADGu4/WsuefRxwOuj/1lD+/nqDJH0MIVcYYIyKHgEOAG6gNzBeRpcaYP5X2vlJbCMaY9caY7cA8EfmzWOKBicCjAY5fhZshQ6xZR7pQzVY/z5pFWkoKuWfPknP6NNknT/LJvfdybPt2di5dyum0tBLfl1BGlcErBg/m6rFjaXP77UTFxRU874yJ4dI+fTh75AibPvqIrV98UajLp1GnTrTt37/QtTxuN+kbN5KZns6RjRtxZ2VhPB5yMzM5tXcvdS69FIfTCcaQdfw4Gz/8sKBVAmDy8gqSAUDu2bOsnTaN4zt3cujnn4t1OVWWEB9DeEJE1gAvAz8CVxpjHgG6AHeV9V5/or0aeAlIAWoAHwDXXlDEKvzl113+y19gwwarC0lVuuM7dhT6AgU4vn07b3fogDMmhjyXiwEzZnD5oEGFzuk/Ywazb74Zj8tV6HlxOrlj9mzrnOnT+TI2lu1ffklcrVr0nTwZZ0wMb7Zta80GMobEJk14cNUqYmvUACj46Q/j8XBs2zbyvDF43G72r16NMzaWvDImLGQcPMiU9u0Rp5O42rV5YMUKards6ffnBkoIjyHUA+40xuzxfdIY4xGRP5T1Rn8WpuUCWUA8EAfsNsZ4zjdSFUEefhgSEmDiRLsjqbIad+1KdLVqBY/F6cTtcuHOyiLn1CncWVl8NmIErrNnC72v+fXXc+fs2ThjfPq4RYitUYOUCRPIc7mIjo9nwMyZPH3kCI9v306r3r35YtQosk+exJWRgevMGU7s3s3KV18l++RJMg4eLPY5ZTEeT7ExB4fTSYMrriCmenUcMcX7350xMWSfOmXNiMrK4syBA8y94w6/PzNQQnlhmjHmr0WTgc9rm8t6rz8JYTVWQugKXAcMEZH5FY5SRZ46day6y3PmgM/Aoao87e64gy6jRuGIiSEqPp4ajRoR45MgAMTh4MyhQwAc27aN/3vjDdZNn86lffvS87/+C0dMDOKwvgqyT55k2V//yvu9e2M8hf/uyz51ikPr1hUaiM7LyWHjhx/ySoMGTLrkEvalpBAVH19mzFFxcdRq0cJqifh+hgjVGjZk2PLl9Js2rfjcdoeDhp06FX4PcOSXX/z4TQVWpK5D8KfLaKQxJtX770NAfxG5L4gxqXDy5JMwZQq8+Sb84x92R1PliAi/nziRHn/9KzkZGXjcbqZcXngSoMPpJLFxY3777jvev/lmPHl5iAjf/sd/MGbLFtr27887nToVdNO4s7I4kJrKofXradSpE2D9NT+rVy9cRbqnnDExnPjtNzy5uXhyczm1bx+1mje3YnM4qHPppez497+tx04ngz/7jDZ/ONdrEVe7NvMHDyb7+HEwhrNHjvBqo0b0eP75ggHnfDHVqpU45dWOWUfWLKPw2qfIH+W2EHySge9z7wcnHBV2WrWCO+6wVi6H8DYDkS6uVi1qNm1K7ZYt6TdtGlFxcURXr05MYiKDFywgKi6OeQMHFvT9G4+HM4cO8e1zz+FwOoutE3A4nWQdP878QYN4sWZNJjZuTPovvxT76zyxWbNC4xDG7ebErl1kHDhAmz/8gXsWLeJ5Y3jeGP7qdhdKBgCJTZviysgoeJyXnU3umTN897e/FVst7c7KombTpoiz+F/dO5cuPe/f3fkI5S6jC6Gb26kLl5wMJ07AzJl2R1JlePLy2L96NXtXrCA3K6vQa1cNHcr49HQeXrOG8YcO0aJHDwDrr/Ai9v34I7VbtaJm06YF/fnidBKTmMiqN95gy+efk3P6NGcOHSr2BR2VkEC7/v2LdxEZgzsri59ee41P77+/zL/gZ/fqVfL0V2PoPWECMT6D1B63m1/mzKF2q1bFzv1o4MBKbyloQlCqJL/7nXW89prWXa4E7uxsZlx/PbNvvJE5t93Gm+3acXr//kLnxNaoQd02bYj2+bIu6S/rU3v3suIf/+C+r7+mdd++1GzWjJY33sjIH39k19KlZc72qd2iBbVbtSp1PQPApnnz2OJTetV4PHz9zDO8VKcOr9SvXzC2UVSey0W7AQO47K67CsXtzsri5K5dxZJQbmZmpW6EV5XHEJQqX3IyDBwIn30Gd5U51VldoB9feYVD69YVzMF3ZWby5SOPMGTBgjLf54iOLvblnXXsGD+8+CKHf/mFwZ99Vui16GrVik1pzeeMieGS3r1Z9GjZS5LycnLYv3o1l91pbYP240svseqNN0q9br6ohARevfhiv1fCJ9SrR0z16n6dGwj56xAijbYQVGAMGACXXKIL1SrBkY0bCy3IMm43hzds4Ksnn+TzkSPZ/e237F+9mo1z55K+aVPBedGlzP5xZ2ay5dNPyTl9utDzfV5/vdQZQ9EJCWycO7fcWKMTEqjj08Wz6aOPyk0GOBy4Tp8uMRmI00nH4cO55aWXCmZWxdauzZAvv0Sk8vbcDOWtKy5E5KU4ZQ+n05px9MQTsHKl1YWkgqJxt25s8+4SCiDR0WQcOMD/vfEGeDz8PHMmDqeTqLg4PG43vSdOpOvo0Vwzfjzf//3vJX8hixSbZnrlkCHUat6cnUuW4MnLY8unn3J8xw5qNmvG3fPmMbt37xLji01MxHgHrpv87nd09NkAMb52kU04HQ7a33UXzXv04MzBg1Rv3Jhv/vznQgPNRV0xdCiNu3Vj/T//SfqGDeRlZ7N47FjuXby40nZHDfWtK86XhMJGURcqKSnJpKYWmwylKtuZM9CsGdx4I8zXpSrB4nG7mTdwIDsXL0YcDqISEsg+frzYF3o+Z2wsT6enE1OjBj/PmMEvH3zAvpUryXO5MHl5RMXH06JnT+5ZtKhCcXz9l7/w44svFvpLvsOwYfx+4kT2r1pFbGIiTbp3L1jjAHBw7Vpm3HAD7uxsxOEgOiGBh9eupfYllwDWOom3O3bEXWSgPF9UQgK3TprE4Z9/Zs20aeR5W0pRcXF0HTOG3hMmlBu3iKwxxiRV6GaLqJl0qeme6t+CzCXS/4I/r7JoC0EFTvXq1urll1+GXbusLiQVcI6oKAZ9+imn9+0jz+Vi5WuvkTplSpnnn01PJzYxkU4PPECnBx4g48ABFo8bx/GdO2lxww3c+MILFY7jpv/5H4zHwxpvsaTODz3ELS+/jIhwaZ8+Jb6nUefOPLx2Lb/On48jKoorhw4lsUmTgtfrtmnDFYMHs2nePNzZ2YX2MQKrEEuDyy9nnU8yAGugff+qVRW+h/OVP+000mgLQQXWgQPQogWMHg2TJtkdTZWwLyWF2TffXOpf1fF16jDuwAGiYsNjIZUxhq2ff87RrVuJio3lu7//HU9uLnkuFzc89xw3PPccCx56iA2zZxcsXHPGxtL5wQfp++ab5V4/EC2EGkltTFKqf//7Xi63hk0LQRNCmDt71sX69YdJSIimQ4eGlTqwVqrhw+Gjj2DfPmt7CxV02xctKlScJl9M9eoMW7aMi5PC4vuoRLmZmRzfuZNqDRpQvWFDALJOnGD6tddau7kaQ60WLRixYkWpxXt8BSohdEyd7Ne5K6R32CQE7TIKY7t3n+Caa6aTmZlLXp6Ha69typdf3kNUlM2Tx8aNg1mz4J134Nln7Y2limjdty9jNm9mxg03kHX8OHkuF2369WPg3LnW9tJhLDohgYZXXlnoufjatRn9888cXLcOEeGiTp1wFtkoL5g8OKrm1hUqdA0b9hnp6Wc5fTqHs2dzWbFiH1OnrrE7LGsr7FtuseouF9leWQVPzWbNeHzbNkauXMljW7fyx48+CvtkUBZnTAxNrr6axt26VWoyyBeolcoi0kdEtorIDhF5pozzuopInogMDOiN+NCEEMa2bTuGx3Ouyy8zM5eNG9NtjMhHcjIcPGjVXVaVxhkTQ4PLLy/YYE4FR6D2MhIRJzAZuBVoj7WbdPtSznsJWByE2ymgCSGMdejQkKioc2MGCQnRdOnSyMaIfPTuDVdcoXWXVUQyEKitK7oBO4wxu4wxLmAuVt36oh4HPgaC+hefJoQwNnPmAJo3r0W1atHExUXRv39bRozoZHdYlvy6y7/8Al9/bXc0SgVYhUpo1hORVJ9jlM+FGgP7fB6neZ8790kijYE7gLeDfVeaECrg6693cdttc/jDH+awfPlvfr1n//7TrF17kIyM0jcJK8nJk9m8995aJk9exe7dJ0o8p1GjGmzZ8hipqaP48MM72br1KC1bvs4jjywkO9td4nsq1dChcNFFup2FijgV7DI6aoxJ8jmm+lyqpGmBRZvU/wv82RgT9J0jdZaRn5Ys2cmAAXPJyrK+aJct283ChUPp1av0Wq5/+9tyXnxxBbGxUYjAkiX30a1b41LPz3fkyFk6dnyHkyez8XgMzzzzDcuXD6NLl4sLnffFF1v5r//6jrNnXezadRKXy/rfy6xZ6zl1Koc5c2zeZC42Fh57DJ57DjZutLqQlIoABiEnMPsUpQFNfR43AYqWH0wC5nqnlNcD+oqI2xjzGQGmCaEMhw+fYe7cjZw4kc2XX24rSAYAmZluXnklpdSE8NNPabzySgo5OXnk5Fhf1D16zMDt9pCXZ6hdO5769eNp0qQmr77amw4dLip47yuvpHDkyFlyc89tRfDYY4tYufLBgsdLl+5k8OD5ZGYWbwlkZbn5+OPNvPnmKowxDBjQjqZNy5+fHRSjR1uV1F59FWbMsCcGpQIsgLudrgZai0hLYD8wGBha6LOMKfiSEZGZwMJgJAPQhFCqVav2c/3103G5St4fBsou3bd58xGKrhHLzj7X4jt+PIvjx7PYuvU41103gw0bRtOypbXx14EDGYWSAcC6dYc4ejSTevWszbveeWdNickgn8uVx9NPL8UYw3PPLeOnn0Zy2WX1Sz3f7faQkrKPzMxcundvQq1acaWeWyF168KIETB1qpUYGoXIoLdSFygQW1cYY9wi8hjW7CEnMN0Ys0lERntfD/q4gS8dQyjFoEEflZkMnE5h8+aj9Os3p8Q+/rZt6/k9uebMGRezZ68nO9vNuHGLSUnZi8NROJu4XHncffdHBY9jY4vn8vwE5HRa/8jOdpOTk0dGRg5/+tPXbNt2jLfeWs0HH2wgK+vcvvjZ2W6uu246t902h0GD5nPppZPYtu2Yf8H748knwe226i4rFQECWULTGLPIGNPGGNPKGPOC97m3S0oGxpjhxpig7RwZsltXiEgf4HWsrDnNGPNiaef6u3VFRkYOzz33LWvXHqJz54t44YWbqF695H7A+PgXig3MRkc7uPzy+uzZc4qzZ124XB5ErC/iGjVi6dy5Ee+9dztNmiTy7be7effdtSxcuI3Y2CjOnnWRl1f67zoqSrj00rrs3n2ioIupKKdTSEsbx0UXVWfduoNcf/0Mzp7N9cbrZMCAy6hePYZVq/azfv3hQu9t164ue/eexhiDwyE0b16L1aGN0YsAAA+QSURBVKsfIiEhmgkTUvjP/1xWcL8icO21TfnhhwfK/Z367c47YflyazuLatUCd12lKigQW1dEJXUwtVb5tzvsMWeTsNm6IiRbCP4u1qiIvDwPvXrN4p131rBixV7eeWcNPXvOJC+v5FbAlVc2KPZcVJSDBQuGkJHhKmg9GGPVHT91Kodly36ja9d36dr1XQYO/IglS3YSE+Nk9Ogu5e4x5HYbtmw5WmoysO7B0L79ZHbvPkGnTo1YseIB7r+/A0OGXMGiRfcyZ85dTJ3aj4cfTiI+/lwLwuEQDh48Q2ZmLllZbs6ezWX37hO8995awFrg5pv8jIHdu0+WGW+Fad1lFUGMR8jJjvXrCCchmRDwf7GG3zZvPlroCzcnJ48tW46yefPREs//9NNBNG2aWPA4NtbJokX3UK9eQpljB6dOZbN581HOnHGRkWEdEyeuxO0uvfupNA6H4CjyX+j06Rz+8z+XAdCx40XMmjWAOXPuomfPFgXnjB7dhTZt6hY8NsZw+nThaa9ZWW4OHz4LwDXXNCUh4dzS/+hoB127lj8bqkKuuQauvlrrLquIYIyQ53b6dYSTUE0I5S7WqKjSvsTzn//22920ajWJ2rVf4q67/kWNGrHs2fMk+/ePY8+esWRm/gc9e7YgPj6aO+5oV+rneDymYPpnPrf7/LrlmjevScuWtQo9l5dnOHSo5GLip05l43Ll4fEYNm064nOPVnLx3fQuISGaG2+0Ji8MG9aBe+65kuhoB3FxUVx+eQOmTet3XjGXSsRqJezcCZ9/HthrK1XZDJoQKlG5izVEZFT+yr8jR46UcHph7dvXp02busTGWv+BYmOdtG1bj/bt67N161H69fuQXbtOcPJkNl9+uZ1Bgz5CRLj44ho0a1ar0CDvyy/fQnR0yb+6UopWVZgILFo0lNOnC28OFx8fxYAB5xLSypX7uP32OdSq9SJ1675MtWr/4L//+7ti14uNddKuXT2cTqFatWgmTOhdkBBEhKlT+5Ge/jS7dj3B2rWjqFs3CKUI77gDWrbUhWoq7BkjuHOdfh3hJFSnnZa7WMO72m8qWIPK5V3Q6XSwfPlwnnnma37++RCdOl3Eiy/ejNPp4OuvdxXaJC4nJ4+lS3dhjCmx779Fi1r06NGcH37YW2af/4WoXj2GZ5/9lhMnsgs936VLI8aM6QpASso+br55dqH1EWCYMGElN93Ukh9+2EtmZi5Op1C9egzffTecWrXiis1gylerVlzgppuWJCrKmnE0diz89BN07x68z1IqqARPXqh+fZ6/UG0hFCzWEJEYrMUaCy70oomJsUyZchspKSOZPPk2atSILXg+f6pmPhHo0+efTJmyulh3k4iwcOFQunYtvHI4kLKyclm6dGexsQeHQwqS1IQJKUWSgSUzM5cOHRry/PM96NmzOUOGXMmaNQ9Tp058qcmg0owYAbVqaStBhTcDuJ3+HWEkJBOCMcYN5C/W2AzMM8ZsCtbn3XVXe5o2rUlc3LmMn5dnWLJkF08/vZRnn/2m2HtiY6O49dbWxRafFVVWsZqoKAeXX16voBvLl9ttStyPKH8g2Dqn5P6p+PgoWrSoxZ/+dC3Llg3n/ffvoEmTxBLPrXQ1alh1lz/5xKq7rFQ48ghkR/l3hJGQTAhQ8mKNYElIiCY19SFeeulm+vRpRWyss2BRWWZmLpMm/V+J7xs+vGOpYwmAd4ZQ6b1Z7drVZfXqUTz8cBcaNqxW6K/32FgntWsX777x3YLisce6FZodBBAXF0WHDhcxcmTnUj/Xdo8/bv1ytOayCmduP48wErIJobJVqxbDE09cTb9+bYuNG3g8hh9/3MuSJTs5depcn/7FF9fg888HF2sFxMU5vV/o8aXOMIqLc/L//t/NxMdH8/rrt/Lbb09y/fXNSEiIplq1aNq1q+d9/dxfGPHxUQXjBwC9e7di3ryBXHttUzp1uognn7yazz4bxA8/jCAmJoSbqo0bw5AhMG0anAzwegelKoNVECHiEkLIrlSuCH9XKvtj//7TtG8/hYyMHIyBhIQoEhPjOHPGhcMhREc7SEkZWWie/5o1B3jxxR/Jzs5l2LAOtGpVhwYNqnH11dPYvz+j0PUTEqK4/fa2jBnTjeuua1boNWMM27cfJy/PQ5s2dXE6HcyatZ5XX01BRHj22esYPDhCdgxdvx46doSXXoI//cnuaFQVEoiVytI+yfBPP79zulz451UWTQgl2LLlKOPHL+Hw4TPUq1eN5ct3F2xMJwLduzchJWVkudd56qmvmDr13CZ08fFRLFp0T6FFZFXazTfDli3WWEJMQLYSVqpcAUkIlyUZZvr5ndM9fBKCdhmVoF27eixcOJTVq0fRsmWtQruUVmRbh5dfvoWRIztTv34CzZrVZPr0/poMfCUnw/798K9/2R2JUhVjgBw/jzCiCaEc3bs3oVq1wts6JCX5t4VzdLSTSZNuJT39afbseTJyunsCpU8faN9e6y6r8BOhYwiaEMpx331XMXTolcTEOImPj6Jt23pMn35B2yqpfPl1l9evh2+KT+1VKmRFaELQMQQ/HTuWSWZmLo0bJ9q/uCuSZGdDixbQqRP8+992R6OqgICMIbROMrzu53fObTqGEHHq1k2gadOamgwCLS7Oqrv81VewKWhrD5UKrAhtIWhCUPZ75BGIj4eJE+2ORCn/aUJQKgjq1oXhw+Gf/4RDh+yORqnyeYBsP48woglBhYannoLcXJg82e5IlCqfdhkpFUStW8Ptt8Nbb0Fmpt3RKFU2TQhKBVlyMhw7BrNm2R2JUmXThKBUkF13HXTtatVdDlTpOaWCRROCUkEkAuPHw/bt8MUXdkejVOm0haBUJbjzTmjeXCuqqdDmAbL8PMKIJgQVWvLrLv/wA6xaZXc0SpXMAHl+HmFEE4IKPSNHQs2a2kpQoU27jJSqBDVqwKhRMH8+/Pab3dEoVZyOIShViZ54wqq7/PrrdkeiVHGaEJSqRE2awKBBWndZhSbdukKpSpacDGfOwNSpdkeiVHHaQlCqEnXqBL16waRJ4HLZHY1S52iXkVI2GD/eqrs8b57dkSh1jgFy/TzCiCYEFdr69IHLLrNqJURAdT8VIXQdglI2cDisusvr1sGyZXZHo5QlgF1GItJHRLaKyA4ReaaE1+8RkQ3eI0VEOgTuRgrThKBC3733QoMGulBNhQ5DQLauEBEnMBm4FWgPDBGR9kVO2w30MMZcBfwdCNosC00IKvTl111etAh+/dXuaJQKZJdRN2CHMWaXMcYFzAX6F/ooY1KMMSe8D38CmgTmJorThKDCw+jRVmJ47TW7I1Gqol1G9UQk1ecY5XOlxsA+n8dp3udKMxL4d4DuopioYF1YqYCqXx+GDYMZM+B//gcaNrQ7IlWV5ScE/xw1xiSV8pqUcvXiJ4r0wkoI1/n9yRWkLQQVPsaN07rLKjQEbtppGtDU53ET4EDRk0TkKmAa0N8Yc+zCgi+dJgQVPtq0gX79YMoUrbus7BeYMYTVQGsRaSkiMcBgYIHvCSLSDPgEuM8Ysy2Ad1CMJgQVXvLrLr//vt2RqKosQHsZGWPcwGPAYmAzMM8Ys0lERovIaO9pfwXqAlNE5GcRSQ34/XiJiYDFPklJSSY1NWi/IxVKjIFu3eDUKdiyxVqnoFQFiMiaMvr0/btGtSRDez+/c1Iv/PMqi/6/SYUXEauVsH07LFxodzSqqtKVykqFiIEDoVkzXaim7KWb2ykVAqKiYOxY+P570K5CZQfd7VSpEPLgg5CYCBMm2B2Jqoq0QI5SISQx8Vzd5T177I5GVTXaQggcEblbRDaJiEdEkoq89qx317+tIvJ7O+JTYeLxx62fWndZ2UETQsBsBO4Evvd90rvL32DgcqAP1rxbZ+WHp8JCs2bwxz/Cu+9q3WVVubRATuAYYzYbY7aW8FJ/YK4xJscYsxvYgbUboFIly6+7PG2a3ZGoqkSnnVYKv3f+E5FR+bsHHjlypFKCUyGoSxfo2dPqNsoNsz/HVPjSMYSKEZGvRWRjCUf/st5WwnMlLqU2xkw1xiQZY5Lq168fmKBVeEpOhrQ0a4BZqcrgISAFckJN0La/NsbcfB5v82vnP6UK6dsX2rWzpqAOHmytZlYq2MKsO8gfodZltAAYLCKxItISaA2ssjkmFery6y6vXQvffWd3NKqqMH4eYcSuaad3iEga8DvgSxFZDGCM2QTMA34FvgLGGGMiMA+rgLv3XquIjm5nodR5s2uW0afGmCbGmFhjTENjzO99XnvBGNPKGNPWGBO0UnEqwsTHw6OPWhvebdlidzRKhaVQ6zJS6vw9+ijExmrdZaXOkyYEFTkaNLDqLs+eDenpdkejIlpkTjPShKAiy1NPQXY2vPWW3ZGoiBaZS5U1IajI0q4d/OEP8OabkBVef52pcBKZK9M0IajIk5wMR49q3WUVRNpCUCo89OgBnTvDxIng8dgdjYpImhCUCg/5dZe3boVFi+yORkUkgw4qKxUu7r4bmjbVhWoqSHQMQanwER1t1V1evhzWrLE7GhVxtMtIqfDy4INQo4a2ElQQaAtBqfBSsyY89BDMmwd799odjYoo2kJQKvyMHWv9nDTJ3jhUhNEWglLhp1kza4D53Xfh9Gm7o1ERQ7euUCo8JSdbyUDrLquAicwuo6BVTFMqZCQlwf33W5vfKRUw4dUd5A9NCKpqmDXL7ghURMlvIUQWTQhKKVVhmhCUUkoB52YZRRZNCEopVWH5s4wiiyYEpZSqMO0yUkopBURql5GuQ1BKqQoL3DoEEekjIltFZIeIPFPC6yIik7yvbxCRzgG8kUK0haCUUhUWmBaCiDiBycAtQBqwWkQWGGN+9TntVqC197gaeMv7M+A0ISilVIUFbFC5G7DDGLMLQETmAv0B34TQH5htjDHATyJSS0QaGWMOBiIAXxGRENasWXNURPZU8G31gKPBiOc8hVI8oRQLaDxlCaVYILTiKS2W5hd+6YOL4W/1/Dw5TkRSfR5PNcZM9f67MbDP57U0iv/1X9I5jQFNCCUxxtSv6HtEJNUYkxSMeM5HKMUTSrGAxlOWUIoFQiueYMZijOkToEtJSZc/j3MCQgeVlVLKPmlAU5/HTYAD53FOQGhCUEop+6wGWotISxGJAQYDC4qcswC43zvbqDtwKhjjBxAhXUbnaWr5p1SqUIonlGIBjacsoRQLhFY8oRRLiYwxbhF5DFgMOIHpxphNIjLa+/rbwCKgL7ADyARGBCsesQaulVJKVXXaZaSUUgrQhKCUUspLE4JSSilAE4JSSikvTQhKKaUATQhKKaW8NCEopZQC4P8DDpeM88qz+4sAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train.plot.scatter('x1', 'x2', c='y', colormap='jet')\n",
    "plt.plot(x, y, 'r')\n",
    "# plt.plot(X_train[:, 0], X_train[:, 1], 'b.')\n",
    "# plt.plot(X_test[:, 0], X_test[:, 1], 'g.')\n",
    "test.plot.scatter('x1', 'x2', c='y', colormap='jet')\n",
    "plt.plot(x, y, 'r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.save(file+'.h5', overwrite=True)  # 保存模型\n",
    "model.save(file+'_'+time.strftime(\"%Y%m%d-%H%M%S\", time.localtime())+'.h5')  # 再保存一遍，加上时间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
